<!DOCTYPE html>
<html>
<head>
    <title>Nuclear Shell Model Energy Levels</title>
</head>
<body>
    <canvas id="nuclearChart" width="600" height="650"></canvas>
    <div style="font-family: Arial, sans-serif; margin-top: 10px;">
        <p><strong>Analysis of the Physics Problem:</strong></p>
        <p>
            The problem asks for the magnetic moment of the ground state of ${}^{209}\text{Pb}$, based on the provided energy level diagram for ${}^{208}\text{Pb}$.
        </p>
        <ol>
            <li><strong>Identify the valence nucleon:</strong> The nucleus ${}^{208}\text{Pb}$ (${}_{82}^{208}\text{Pb}_{126}$) is a doubly magic nucleus, with filled proton and neutron shells. The nucleus ${}^{209}\text{Pb}$ has one extra neutron compared to the ${}^{208}\text{Pb}$ core. The properties of the ground state of ${}^{209}\text{Pb}$ are determined by this single "valence" neutron.</li>
            <li><strong>Determine the state of the valence nucleon:</strong> According to the provided diagram, the valence neutron will occupy the lowest available unoccupied neutron state. From the "NEUTRON STATE" section, this is the <strong>g<sub>9/2</sub></strong> level.</li>
            <li><strong>Apply the Schmidt Model:</strong> The magnetic moment of a single-nucleon state is estimated using the Schmidt model. For a neutron in a g<sub>9/2</sub> state, we have:
                <ul>
                    <li>Orbital angular momentum: $l=4$ (since it's a 'g' state).</li>
                    <li>Total angular momentum: $j=9/2$.</li>
                    <li>This corresponds to the case $j=l+1/2$.</li>
                </ul>
            </li>
            <li><strong>Calculation:</strong> The Schmidt formula for the magnetic moment ($\mu$) for a neutron in a $j=l+1/2$ state is $\mu = (j - 1/2)g_l + \frac{1}{2}g_s$. For a neutron, the orbital g-factor $g_l = 0$ and the spin g-factor $g_s \approx -3.826\,\mu_N$ (where $\mu_N$ is the nuclear magneton).
            <br>
            Substituting the values:
            $\mu = (9/2 - 1/2)(0) + \frac{1}{2}(-3.826\,\mu_N) = -1.913\,\mu_N$.
            </li>
        </ol>
        <p>
            Therefore, the estimated magnetic moment of the ground state of ${}^{209}\text{Pb}$ is **-1.913 $\mu_N$**.
        </p>
    </div>

    <script>
        const canvas = document.getElementById('nuclearChart');
        const ctx = canvas.getContext('2d');
        ctx.fillStyle = 'white';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = 'black';

        // --- Coordinate and Data Definitions ---

        const yOffset = 60;
        const yFactor = 45;
        const y = (E) => yOffset + E * yFactor;

        // Data for the energy levels, estimated from the image
        const neutron_unoccupied = [
            { label: 'd3/2', E_calc: 1.2, E_obs: 1.2 },
            { label: 'g7/2', E_calc: 1.3, E_obs: 1.3 },
            { label: 's1/2', E_calc: 1.6, E_obs: 1.9 },
            { label: 'j15/2', E_calc: 1.8, E_obs: 1.4 },
            { label: 'd5/2', E_calc: 2.0, E_obs: 2.4 },
            { label: 'i11/2', E_calc: 2.6, E_obs: 3.2 },
            { label: 'g9/2', E_calc: 3.5, E_obs: 4.0 }
        ];

        const neutron_occupied = [
            { label: 'p1/2', E_calc: 7.2, E_obs: 7.4 },
            { label: 'f5/2', E_calc: 7.8, E_obs: 8.0 },
            { label: 'p3/2', E_calc: 8.1, E_obs: 8.3 },
            { label: 'i13/2', E_calc: 8.5, E_obs: 9.0 },
            { label: 'f7/2', E_calc: 9.8, E_obs: 9.7 },
            { label: 'h9/2', E_calc: 10.5, E_obs: 10.8 }
        ];

        const proton_unoccupied = [
            { label: 'i13/2', E_calc: 2.0, E_obs: 2.1 },
            { label: 'f7/2', E_calc: 2.5, E_obs: 2.9 },
            { label: 'h9/2', E_calc: 3.9, E_obs: 4.1 }
        ];

        const proton_occupied = [
            { label: 's1/2', E_calc: 7.8, E_obs: 8.0 },
            { label: 'd3/2', E_calc: 8.0, E_obs: 8.4 },
            { label: 'h11/2', E_calc: 8.9, E_obs: 9.3 },
            { label: 'd5/2', E_calc: 9.5, E_obs: 9.7 },
            { label: 'g7/2', E_calc: 11.1, E_obs: 11.5 }
        ];

        // --- Drawing Functions ---

        function drawStateGroup(ctx, states, x_label, align, x_calc, x_obs) {
            states.forEach(state => {
                const y_calc = y(state.E_calc);
                const y_obs = y(state.E_obs);
                const y_label = (y_calc + y_obs) / 2;

                ctx.textAlign = align;
                ctx.textBaseline = 'middle';
                ctx.font = '16px Arial';
                ctx.fillStyle = 'black';
                ctx.fillText(state.label, x_label, y_label);

                ctx.beginPath();
                ctx.moveTo(x_calc, y_calc);
                ctx.lineTo(x_obs, y_obs);
                ctx.lineWidth = 1.5;
                ctx.stroke();
            });
        }
        
        // --- Main Drawing Logic ---
        
        // Y-axis
        ctx.save();
        ctx.translate(25, 330);
        ctx.rotate(-Math.PI / 2);
        ctx.textAlign = 'center';
        ctx.font = '16px Arial';
        ctx.fillText('Binding Energy (MeV)', 0, 0);
        ctx.restore();

        ctx.beginPath();
        ctx.moveTo(80, y(0));
        ctx.lineTo(80, y(11));
        ctx.stroke();

        ctx.textAlign = 'right';
        ctx.textBaseline = 'middle';
        ctx.font = '14px Arial';
        for (let E = 2; E <= 10; E += 2) {
            ctx.beginPath();
            ctx.moveTo(70, y(E));
            ctx.lineTo(80, y(E));
            ctx.stroke();
            ctx.fillText(E, 65, y(E));
        }

        // Neutron States
        const n_x_label = 120, n_x_calc = 150, n_x_obs = 220;
        drawStateGroup(ctx, neutron_unoccupied, n_x_label, 'right', n_x_calc, n_x_obs);
        drawStateGroup(ctx, neutron_occupied, n_x_label, 'right', n_x_calc, n_x_obs);
        
        // Proton States
        const p_x_label = 300, p_x_calc = 320, p_x_obs = 390;
        drawStateGroup(ctx, proton_unoccupied, p_x_label, 'right', p_x_calc, p_x_obs);
        drawStateGroup(ctx, proton_occupied, p_x_label, 'right', p_x_calc, p_x_obs);
        
        // Middle Labels and Fermi Line
        const fermi_E = 5.8;
        const y_fermi = y(fermi_E);
        ctx.beginPath();
        ctx.setLineDash([5, 5]);
        ctx.moveTo(130, y_fermi);
        ctx.lineTo(470, y_fermi);
        ctx.stroke();
        ctx.setLineDash([]);
        
        ctx.font = '16px Arial';
        ctx.textAlign = 'left';
        ctx.fillText('208', 480, y_fermi - 5);
        ctx.font = '12px Arial';
        ctx.fillText('Pb', 510, y_fermi - 5);
        
        ctx.font = '16px Arial';
        ctx.save();
        ctx.translate(270, 180);
        ctx.rotate(-Math.PI / 2);
        ctx.textAlign = 'center';
        ctx.fillText('Unoccupied', 0, 0);
        ctx.restore();
        
        ctx.save();
        ctx.translate(270, 450);
        ctx.rotate(-Math.PI / 2);
        ctx.textAlign = 'center';
        ctx.fillText('Occupied', 0, 0);
        ctx.restore();
        
        // Bottom Labels
        ctx.font = '14px Arial';
        ctx.textAlign = 'center';
        const y_bottom_labels = y(11.8);
        
        ctx.fillText('calc.', n_x_calc, y_bottom_labels);
        ctx.fillText('obs.', n_x_obs, y_bottom_labels);
        ctx.font = '16px Arial';
        ctx.fillText('NEUTRON STATE', (n_x_calc + n_x_obs) / 2, y_bottom_labels + 20);

        ctx.font = '14px Arial';
        ctx.fillText('calc.', p_x_calc, y_bottom_labels);
        ctx.fillText('obs.', p_x_obs, y_bottom_labels);
        ctx.font = '16px Arial';
        ctx.fillText('PROTON STATE', (p_x_calc + p_x_obs) / 2, y_bottom_labels + 20);

        // Figure Caption
        ctx.textAlign = 'center';
        ctx.fillText('Fig. 2.13', canvas.width / 2, canvas.height - 10);
        
    </script>
</body>
</html>